home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / sharew / geograph / welt / welt.lst < prev    next >
Encoding:
File List  |  1990-10-19  |  29.5 KB  |  1,048 lines

  1. ' *****************************************************************************
  2. '
  3. ' W E L T     -   ein Geographie-Lernprogramm
  4. '
  5. ' programmiert von Heiko Müller, Mozartstraße 17, 2905 Edewecht
  6. '
  7. ' diesem Programm liegen die Landkarten und die Daten des PD-Programmes
  8. ' "WORLD" zugrunde. Das dazugehörige BASIC-Programm wurde neu geschrieben.
  9. ' Herzlichen Dank dem freundlichen Programmierer von WORLD für die
  10. ' Fleißarbeit, auf die ich so einfach zurückgreifen konnte!
  11. '
  12. ' Zur Erweiterung und Verbesserung der Daten müssen die DATA-Zeilen am
  13. ' Ende dieser Programmliste geändert bzw. erweitert werden. Zum Verändern
  14. ' der Karten braucht man ein Malprogramm und das Programm KART_NEU.PRG.
  15. '
  16. ' begonnen am 3.2.1989
  17. '
  18. datum$="27.09.1990"                   ! letzes Bearbeitungsdatum
  19. version$="1.60"                       ! Version-Nummer
  20. '
  21. ' SETTIME "20:00",datum$              ! richtiges Datum beim Abspeichern
  22. '
  23. ' *****************************************************************************
  24. '
  25. IF XBIOS(4)<>2
  26.   ALERT 3,"Dieses Programm läuft leider|nur mit einem|Schwarzweiß-Monitor!",1,"Sch... ",dummy%
  27.   EDIT
  28. ENDIF
  29. '
  30. GOSUB speicher_einrichten
  31. GOSUB karten_einlesen
  32. GOSUB menue_einrichten
  33. GOSUB rekorde_von_disk
  34. CLS
  35. PUT x_pos(0),y_pos(0),karte$(0)    ! geladene Weltkarte nochmal zeigen
  36. MENU menue$()
  37. MENU OFF
  38. '
  39. ' *************************************** Hauptprogramm ***********************
  40. '
  41. ON MENU  GOSUB abfrage
  42. DO
  43.   ON MENU
  44. LOOP
  45. '
  46. ' ****************************************************************************
  47. '
  48. PROCEDURE menue_einrichten
  49.   LOCAL i%
  50.   RESTORE
  51.   FOR i%=0 TO 40
  52.     READ menue$(i%)
  53.     EXIT IF menue$(i%)="***"
  54.   NEXT i%
  55.   menue$(i%)=""
  56.   menue$(i%+1)=""
  57.   DATA  WELT ,  über dieses Programm,------------------------
  58.   DATA 1,2,3,4,5,6,""
  59.   DATA Karten, Deutschland
  60.   DATA  Europa, USA
  61.   DATA  Südamerika, Asien, Afrika
  62.   DATA  Mittelamerika, Ozeanien
  63.   DATA ----------------, Programmende,""
  64.   DATA Anwenden,  Länder abfragen,  Hauptstädte abfragen
  65.   DATA ------------------------,  suchen lassen
  66.   DATA   zeigen lassen,------------------------,  Musik
  67.   DATA   Statistik,------------------------
  68.   DATA   Spieler wechseln,""
  69.   DATA ***
  70. RETURN
  71. '
  72. ' ****************************************************************************
  73. '
  74. PROCEDURE abfrage
  75.   MENU KILL
  76.   auswahl%=MENU(0)
  77.   '
  78.   WHILE MOUSEK
  79.   WEND
  80.   '
  81.   IF auswahl%=1
  82.     GOSUB ueber
  83.   ENDIF
  84.   IF auswahl%>=11 AND auswahl%<=18
  85.     karte%=auswahl%-10
  86.     GOSUB karte_zeigen(karte%)
  87.   ENDIF
  88.   IF auswahl%=20
  89.     GOSUB schluss
  90.   ENDIF
  91.   IF auswahl%=23
  92.     GOSUB abfragen(1)
  93.   ENDIF
  94.   IF auswahl%=24
  95.     GOSUB abfragen(2)
  96.   ENDIF
  97.   IF auswahl%=26
  98.     GOSUB suchen
  99.   ENDIF
  100.   IF auswahl%=27
  101.     GOSUB zeigen
  102.   ENDIF
  103.   IF auswahl%=29
  104.     musik!=NOT musik!
  105.     IF musik!
  106.       GOSUB dreiklang_rauf
  107.       al$="Diese Melodie erklingt jetzt|bei jeder richtigen Antwort."
  108.       ALERT 1,al$,1,"Prima|Oh nein",antw%
  109.       IF antw%=2
  110.         musik!=FALSE
  111.       ENDIF
  112.     ENDIF
  113.   ENDIF
  114.   IF auswahl%=30
  115.     GOSUB statistik
  116.   ENDIF
  117.   IF auswahl%=32
  118.     GOSUB spieler_aendern
  119.   ENDIF
  120.   MENU OFF
  121.   MENU menue$()
  122.   MENU 28,ABS(musik!)
  123.   ON MENU  GOSUB abfrage
  124.   ON MENU KEY GOSUB abfrage
  125.   IF karte%>0
  126.     PRINT AT(50,1);karte%;". Karte mit ";anzahl%'"Ländern"
  127.   ENDIF
  128.   DEFMOUSE 3
  129.   SHOWM
  130. RETURN
  131. '
  132. ' ****************************************************************************
  133. '
  134. PROCEDURE speicher_einrichten
  135.   LOCAL i%
  136.   DIM menue$(40)
  137.   DIM stadt$(400),land$(400),karte%(400),x%(400),y%(400),flag!(400)
  138.   DIM karte$(9)
  139.   DIM landpunkte%(9)
  140.   DIM stadtpunkte%(9)
  141.   DIM x_pos(9),y_pos(9)
  142.   DIM rekord%(11)
  143.   DIM name$(10)
  144.   DEFMOUSE 3
  145.   musik!=FALSE            ! keine Dreiklänge bei Antworten
  146.   '
  147.   RESTORE positionsdaten
  148.   i%=0
  149.   REPEAT
  150.     INC i%
  151.     READ land$(i%),stadt$(i%),karte%(i%),x%(i%),y%(i%)
  152.     IF land$(i%)="ENDE"
  153.       datenzahl%=i%-1
  154.     ENDIF
  155.   UNTIL land$(i%)="SCHLUSS"
  156.   schluss%=i%-1
  157. RETURN
  158. '
  159. ' ****************************************************************************
  160. '
  161. PROCEDURE ueberschrift
  162.   DEFTEXT 1,16,0,32
  163.   TEXT 120,50,"W E L T"
  164.   DEFTEXT 1,16,0,13
  165.   TEXT 270,50,"das Erdkunde-Lernprogramm"
  166.   DEFTEXT 1,0,0,4
  167.   TEXT 550,30,"Version "+version$
  168.   TEXT 550,40,"vom"
  169.   TEXT 550,50,datum$
  170.   DEFTEXT 1,0,0,13
  171.   TEXT 120,380,"Bitte warten - die Karten werden geladen"
  172. RETURN
  173. '
  174. ' ****************************************************************************
  175. '
  176. PROCEDURE ueber
  177.   CLS
  178.   PRINT
  179.   PRINT "    W E L T   -   das Erdkunde-Lernprogramm Version ";version$;" vom ";datum$
  180.   PRINT
  181.   PRINT
  182.   PRINT
  183.   PRINT " Kurze Bedienungsanleitung:"
  184.   PRINT
  185.   PRINT " Landkarten und die wichtigsten Anwendungsfunktionen lassen sich außer über"
  186.   PRINT " das Menü auch direkt durch eine Tastenbetätigung aufrufen. Welche Tasten das"
  187.   PRINT " sind, kann man dem Menü entnehmen."
  188.   PRINT
  189.   PRINT " Zurück zum Hauptmenü geht es jeweils mit der rechten Maustaste."
  190.   PRINT
  191.   PRINT " Alles Weitere kann man einfach durch Probieren herausfinden."
  192.   PRINT
  193.   PRINT
  194.   PRINT " Dieses Programm wurde in GfA-BASIC Version 2.02 geschrieben von"
  195.   PRINT
  196.   PRINT "     Heiko Müller, Mozartstraße 17, 2905 Edewecht"
  197.   PRINT
  198.   PRINT " Es darf mitsamt der Programmliste beliebig oft kopiert und weitergegeben"
  199.   PRINT " werden."
  200.   PRINT
  201.   PRINT
  202.   PRINT "                  weiter mit der linken Maustaste, zurück mit der rechten...";
  203.   REPEAT
  204.     MOUSE x%,y%,k%
  205.   UNTIL k%
  206.   IF k%=1
  207.     CLS
  208.     PRINT
  209.     PRINT " Die in diesem Programm verwendeten Landkarten stammen aus dem Programm WORLD."
  210.     PRINT " Auch die enorme Fleißarbeit, alle Positionen der Städte herauszufinden und zu"
  211.     PRINT " tippen, habe ich mir gespart, sondern einfach den WORLD-Daten entnommen."
  212.     PRINT " Herzlichen Dank dafür an Herrn"
  213.     PRINT
  214.     PRINT "     Bernd Werner, Kemptener Straße 68, Reutlingen 1"
  215.     PRINT
  216.     PRINT " Die Erstellung eines neuen PD-Programms mit seinen Daten und Karten habe"
  217.     PRINT " ich vorgenommen, um meinen Schüler das Lernen mit dem Programm zu erleichtern."
  218.     PRINT
  219.     PRINT " Geändert wurden folgende Funktionen:"
  220.     PRINT
  221.     PRINT " - Es ist möglich, mit Hilfe des Programms die Länder bzw. Städte zu lernen,"
  222.     PRINT "   bevor man abgefragt wird."
  223.     PRINT " - Bei Fehlern wird dieselbe Frage noch einmal gestellt, bis das Land bzw."
  224.     PRINT "   die Stadt endlich richtig gezeigt wurde."
  225.     PRINT " - Die Reihenfolge der gestellten Fragen wird zufällig bestimmt."
  226.     PRINT " - Man kann sich nach Stichwörtern Hauptstädte oder Länder suchen lassen."
  227.     PRINT " - Das Programm legt auf der Diskette eine Bestenliste an."
  228.     PRINT " - Alle Landkarten wurden zu einer einzigen Datei vereinigt."
  229.     PRINT " - Die Datei mit den Namen und Koordinaten wurde in das Programm integriert."
  230.     PRINT "   (Deshalb muß die Programmliste für Verbesserungen immer mitgegeben werden!)"
  231.     PRINT " - eine Karte der DDR wurde hinzugefügt."
  232.     REPEAT
  233.     UNTIL MOUSEK>1
  234.   ENDIF
  235.   SPUT karte$
  236. RETURN
  237. '
  238. ' ****************************************************************************
  239. '
  240. PROCEDURE karten_einlesen
  241.   LOCAL i%
  242.   pfad$=CHR$(GEMDOS(25)+65)+":"+DIR$(0)+"\"
  243.   IF EXIST(pfad$+"welt.dat")
  244.     '                                    Datei existiert?
  245.     OPEN "I",#1,pfad$+"welt.dat"
  246.     RESTORE kartenpositionen
  247.     FOR i%=0 TO 8             ! 9 Landkarten einladen  (0 bis 8)
  248.       READ x_pos(i%),y_pos(i%)
  249.       karte$(i%)=INPUT$(CVI(INPUT$(2,#1)),#1)
  250.       IF i%=0
  251.         PUT x_pos(i%),y_pos(i%),karte$(i%)    ! geladene Weltkarte anzeigen
  252.         SGET karte$
  253.         GOSUB ueberschrift
  254.       ENDIF
  255.     NEXT i%
  256.     bild%=1
  257.     CLOSE #1
  258.   ELSE
  259.     ALERT 1,"Ohne die Datei WELT.DAT|ist dieses Programm|leider nicht lauffähig!",1,"Sch...",dummy%
  260.     EDIT
  261.   ENDIF
  262. RETURN
  263. '
  264. PROCEDURE karte_zeigen(karte%)
  265.   LOCAL i%
  266.   CLS
  267.   PUT x_pos(karte%),y_pos(karte%),karte$(karte%)    ! Karte anzeigen
  268.   SGET karte$
  269.   '
  270.   i%=0
  271.   '
  272.   DO                             ! erste Stadt zu dieser Karte suchen
  273.     INC i%
  274.     EXIT IF karte%(i%)=karte%
  275.   LOOP
  276.   anfang%=i%
  277.   DO                             ! letzte Stadt zu dieser Karte suchen
  278.     INC i%
  279.     EXIT IF karte%(i%)=karte%+1
  280.   LOOP
  281.   ende%=i%
  282.   anzahl%=ende%-anfang%          ! Anzahl der Städte auf dieser Karte
  283.   DEC ende%
  284. RETURN
  285. '
  286. PROCEDURE zeigen
  287.   LOCAL i%
  288.   DEFFILL 1,2,8                  ! Füllfarbe schwarz
  289.   IF karte%=0
  290.     ALERT 1,"Bitte zuerst eine andere|Landkarte aussuchen!",1,"na klar",dummy%
  291.   ELSE
  292.     SPUT karte$
  293.     REPEAT
  294.       gefunden!=FALSE
  295.       REPEAT
  296.         MOUSE x%,y%,k%
  297.         '
  298.         IF (BIOS(11,-1) AND 6)=6  ! Wenn Control- und Shifttaste gehalten
  299.           DEFMOUSE 7
  300.           PRINT AT(2,24);"x=";x%''"y=";y%''''
  301.         ENDIF
  302.         '
  303.       UNTIL k%
  304.       WHILE MOUSEK      ! warten, bis Maustaste wieder losgelassen ist
  305.       WEND
  306.       IF k%=1
  307.         FOR i%=anfang% TO ende%
  308.           IF ABS(x%-x%(i%))<6 AND ABS(y%-y%(i%))<6
  309.             gefunden!=TRUE
  310.             SPUT karte$
  311.             PCIRCLE x%(i%),y%(i%),5
  312.             '
  313.             PRINT AT(2,24);
  314.             IF land$(i%)<>"-"
  315.               PRINT land$(i%);",  Hauptstadt: ";stadt$(i%)
  316.             ELSE
  317.               PRINT stadt$(i%)
  318.             ENDIF
  319.             '
  320.           ENDIF
  321.           EXIT IF gefunden!
  322.         NEXT i%
  323.         IF NOT gefunden!
  324.           FOR i%=datenzahl%+1 TO schluss%
  325.             IF (ABS(x%-x%(i%))<6 AND ABS(y%-y%(i%))<6) AND karte%(i%)=karte%
  326.               gefunden!=TRUE
  327.               SPUT karte$
  328.               PCIRCLE x%(i%),y%(i%),5
  329.               '
  330.               PRINT AT(2,24);
  331.               IF land$(i%)<>"-"
  332.                 PRINT land$(i%);",  Hauptstadt: ";stadt$(i%)
  333.               ELSE
  334.                 PRINT stadt$(i%)
  335.               ENDIF
  336.               '
  337.             ENDIF
  338.             EXIT IF gefunden!
  339.           NEXT i%
  340.         ENDIF
  341.         ' ####################
  342.         ' hier noch einbauen, daß am Schluß weitergesucht wird
  343.         ' ####################
  344.         IF NOT gefunden!
  345.           OUT 2,7
  346.           SPUT karte$
  347.           PRINT AT(2,24);"Du mußt genau auf eine Hauptstadt zeigen!"
  348.         ENDIF
  349.       ENDIF
  350.     UNTIL k%=2
  351.   ENDIF
  352. RETURN
  353. '
  354. PROCEDURE suchen
  355.   LOCAL i%
  356.   DEFFILL 0,2,8           ! weiße Füllfarbe
  357.   PBOX 140,50,500,150
  358.   BOX 140,50,500,150
  359.   BOX 141,51,499,149
  360.   BOX 143,53,497,147
  361.   PRINT AT(23,5);"Welcher Begriff soll gesucht werden?"
  362.   PRINT AT(30,7);
  363.   FORM INPUT 20,such$
  364.   such$=UPPER$(such$)
  365.   i%=0
  366.   antw%=1
  367.   gefunden!=FALSE
  368.   RESTORE positionsdaten
  369.   REPEAT
  370.     INC i%
  371.     READ land$(i%),stadt$(i%),karte%(i%),x%(i%),y%(i%)
  372.     IF INSTR(UPPER$(land$(i%)),such$) OR INSTR(UPPER$(stadt$(i%)),such$)
  373.       GOSUB karte_zeigen(karte%(i%))
  374.       ALERT 2,land$(i%)+" |"+stadt$(i%)+" | ",1,"OK|weiter",antw%
  375.       IF antw%=1
  376.         gefunden!=TRUE
  377.         a%=i%
  378.       ENDIF
  379.     ENDIF
  380.   UNTIL land$(i%)="SCHLUSS" OR gefunden!
  381.   IF NOT gefunden!
  382.     ALERT 1,such$+"|leider nicht gefunden",1,"schade",dummy%
  383.   ELSE
  384.     karte%=karte%(a%)
  385.     PRINT AT(2,24);
  386.     IF land$(a%)<>"-"
  387.       PRINT land$(a%);",  Hauptstadt: ";stadt$(a%)
  388.     ELSE
  389.       PRINT stadt$(a%)
  390.     ENDIF
  391.     GOSUB blinken(x%(a%),y%(a%))
  392.   ENDIF
  393.   SPUT karte$
  394.   IF gefunden!
  395.     DEFFILL 1,2,8    ! Füllfarbe schwarz
  396.     PCIRCLE x%(a%),y%(a%),5
  397.     DEFFILL 0,2,8    ! Füllfarbe weiß
  398.     PCIRCLE x%(a%),y%(a%),3
  399.     PRINT AT(2,24);
  400.     IF land$(a%)<>"-"
  401.       PRINT land$(a%);",  Hauptstadt: ";stadt$(a%)
  402.     ELSE
  403.       PRINT stadt$(a%)
  404.     ENDIF
  405.     '
  406.   ENDIF
  407.   DEFFILL 1,2,8   ! Füllfarbe schwarz
  408. RETURN
  409. '
  410. PROCEDURE blinken(x%,y%)
  411.   LOCAL i%
  412.   FOR i%=1 TO 6
  413.     DEFFILL 0,2,8   ! Füllfarbe weiß
  414.     PCIRCLE x%,y%,5
  415.     PAUSE 10
  416.     DEFFILL 1,2,8   ! Füllfarbe schwarz
  417.     PCIRCLE x%,y%,5
  418.     PAUSE 10
  419.   NEXT i%
  420.   DEFLINE 1,1,0,0
  421. RETURN
  422. '
  423. PROCEDURE abfragen(art%)
  424.   LOCAL a%,i%
  425.   IF karte%=0
  426.     ALERT 1,"Bitte zuerst eine andere|Landkarte aussuchen!",1,"na klar",dummy%
  427.   ELSE
  428.     ARRAYFILL flag!(),0       ! in diesen Speichern werden Treffer registriert
  429.     treffer%=0
  430.     fehler%=0
  431.     REPEAT
  432.       SPUT karte$
  433.       PRINT AT(2,4);"+";treffer%;" -";fehler%
  434.       a%=RANDOM(anzahl%)+anfang%           ! Land wird zufällig ausgesucht
  435.       '
  436.       REPEAT
  437.         EXIT IF treffer%=anzahl%
  438.         IF flag!(a%)                       ! solange suchen, bis ein Land
  439.           INC a%                           ! gefunden wird, das noch nicht
  440.           IF a%>ende%                      ! richtig gezeigt wurde.
  441.             a%=anfang%
  442.           ENDIF
  443.         ENDIF
  444.       UNTIL NOT flag!(a%)
  445.       '
  446.       EXIT IF treffer%=anzahl%
  447.       REPEAT
  448.         '  SPUT karte$
  449.         PRINT AT(2,4);"+";treffer%;" -";fehler%
  450.         IF art%=1
  451.           PRINT AT(2,24);land$(a%)
  452.         ELSE
  453.           PRINT AT(2,24);stadt$(a%)
  454.         ENDIF
  455.         REPEAT
  456.           MOUSE x%,y%,k%
  457.         UNTIL k%
  458.         WHILE MOUSEK      ! warten, bis Maustaste wieder losgelassen ist
  459.         WEND
  460.         IF k%>1
  461.           ALERT 2,"Zurück zum Hauptmenü?",1,"ja|nein",antw%
  462.           IF antw%=2
  463.             k%=1
  464.           ENDIF
  465.         ENDIF
  466.         EXIT IF k%>1
  467.         gefunden!=FALSE
  468.         FOR i%=anfang% TO ende%
  469.           IF ABS(x%-x%(i%))<6 AND ABS(y%-y%(i%))<6
  470.             gefunden!=TRUE
  471.             PCIRCLE x%(i%),y%(i%),5
  472.           ENDIF
  473.           EXIT IF gefunden!
  474.         NEXT i%
  475.         IF NOT gefunden!
  476.           OUT 2,7
  477.           PRINT AT(2,23);"Du mußt genau auf die Hauptstadt zeigen!"
  478.         ELSE
  479.           IF land$(a%)=land$(i%)
  480.             IF musik!
  481.               GOSUB dreiklang_rauf
  482.             ELSE
  483.               GOSUB pling
  484.             ENDIF
  485.             flag!(a%)=TRUE
  486.             INC treffer%
  487.           ELSE
  488.             '
  489.             PRINT AT(2,23);"leider falsch: ";
  490.             IF land$(i%)<>"-"
  491.               PRINT land$(i%);",  Hauptstadt: ";stadt$(i%)
  492.             ELSE
  493.               PRINT stadt$(i%)
  494.             ENDIF
  495.             '
  496.             IF musik!
  497.               GOSUB halbtoene_runter
  498.             ELSE
  499.               GOSUB plong
  500.             ENDIF
  501.             INC fehler%
  502.             PAUSE 50
  503.             '
  504.             PRINT AT(2,24);"richtig: ";
  505.             IF land$(a%)<>"-"
  506.               PRINT land$(a%);",  Hauptstadt: ";stadt$(a%)
  507.             ELSE
  508.               PRINT stadt$(a%)
  509.             ENDIF
  510.             '
  511.             GOSUB blinken(x%(a%),y%(a%))
  512.           ENDIF
  513.         ENDIF
  514.       UNTIL gefunden!
  515.       '
  516.       EXIT IF treffer%=anzahl% OR k%>1
  517.     UNTIL MOUSEK>1
  518.     p%=treffer%-fehler%
  519.     IF p%<0
  520.       p%=0
  521.     ENDIF
  522.     SPUT karte$
  523.     PRINT AT(2,4);"+";treffer%;" -";fehler%
  524.     '
  525.     IF anzahl%-p%<2
  526.       kommentar$="Spitze"       ! höchstens eine Frage daneben
  527.     ELSE
  528.       IF p%*2>anzahl%
  529.         kommentar$="Klasse"     ! mehr als die Hälfte richtig
  530.       ELSE
  531.         IF p%=0
  532.           kommentar$="oha"      ! mehr Fehler als richtige Antworten
  533.         ELSE
  534.           kommentar$="na ja"
  535.         ENDIF
  536.       ENDIF
  537.     ENDIF
  538.     '
  539.     IF art%=1
  540.       IF p%>landpunkte%(karte%)
  541.         landpunkte%(karte%)=p%
  542.       ENDIF
  543.       art$="Länder"
  544.     ELSE
  545.       IF p%>stadtpunkte%(karte%)
  546.         stadtpunkte%(karte%)=p%
  547.       ENDIF
  548.       art$="Hauptstädte"
  549.     ENDIF
  550.     al$="Du hast in der Karte "+STR$(karte%)+"|für die "+art$+"|"+STR$(p%)
  551.     al$=al$+" Punkte erreicht."
  552.     ALERT 1,al$,1,kommentar$,dummy%
  553.   ENDIF
  554. RETURN
  555. '
  556. PROCEDURE dreiklang_rauf
  557.   LOCAL i%
  558.   SOUND 1,15,1,4,5
  559.   SOUND 1,15,5,4,5
  560.   SOUND 1,15,8,4,5
  561.   FOR i%=15 DOWNTO 0
  562.     SOUND 1,i%,1,5,4
  563.   NEXT i%
  564. RETURN
  565. '
  566. PROCEDURE halbtoene_runter
  567.   LOCAL i%
  568.   SOUND 1,12,8,3,30
  569.   SOUND 1,12,7,3,30
  570.   SOUND 1,12,6,3,30
  571.   FOR i%=12 DOWNTO 0
  572.     SOUND 1,i%,5,3,4
  573.   NEXT i%
  574. RETURN
  575. '
  576. PROCEDURE pling
  577.   SOUND 1,10,1,5,4
  578.   SOUND 1,5,1,5,4
  579.   SOUND 1,0,1,5,4
  580. RETURN
  581. '
  582. PROCEDURE plong
  583.   SOUND 1,10,1,2,4
  584.   SOUND 1,5,1,2,4
  585.   SOUND 1,0,1,2,4
  586. RETURN
  587. '
  588. PROCEDURE statistik
  589.   WHILE MOUSEK        ! warten, bis der Mausknopf losgelassen wird
  590.   WEND
  591.   CLS
  592.   PRINT
  593.   PRINT " So viele Punkte hat ";name$;" bis jetzt erreicht:"
  594.   PRINT
  595.   PRINT "                                 Ländernamen  Hauptstädte"
  596.   PRINT
  597.   PRINT " Deutschland               :"
  598.   PRINT
  599.   PRINT " Europa                    :"
  600.   PRINT
  601.   PRINT " USA                       :"
  602.   PRINT
  603.   PRINT " Südamerika                :"
  604.   PRINT
  605.   PRINT " Asien                     :"
  606.   PRINT
  607.   PRINT " Afrika                    :"
  608.   PRINT
  609.   PRINT " Mittelamerika             :"
  610.   PRINT
  611.   PRINT " Ozeanien                  :"
  612.   PRINT
  613.   PRINT
  614.   PRINT "-------------------------------------------------------------------------"
  615.   PRINT " insgesamt:            (von ";datenzahl%*2;")                 (weiter mit beliebiger Taste)";
  616.   '
  617.   FOR i%=1 TO 8
  618.     PRINT AT(35,2*i%+4);
  619.     PRINT USING "####",landpunkte%(i%);
  620.     PRINT AT(48,2*i%+4);
  621.     PRINT USING "####",stadtpunkte%(i%);
  622.   NEXT i%
  623.   '
  624.   summe%=0
  625.   FOR i%=1 TO 8
  626.     summe%=summe%+stadtpunkte%(i%)+landpunkte%(i%)
  627.   NEXT i%
  628.   PRINT AT(13,24);summe%;
  629.   '
  630.   REPEAT              ! auf Mausklick oder Tastenbetätigung warten
  631.   UNTIL MOUSEK OR INKEY$>""
  632.   WHILE MOUSEK        ! warten, bis der Mausknopf losgelassen wird
  633.   WEND
  634.   '
  635.   CLS
  636.   PRINT AT(20,2);"R E K O R D L I S T E"
  637.   PRINT AT(18,3);"-------------------------"
  638.   FOR i%=1 TO 10
  639.     PRINT AT(20,i%*2+2);name$(i%)
  640.     PRINT AT(40,i%*2+2);rekord%(i%)
  641.   NEXT i%
  642.   '
  643.   PRINT AT(18,23);"-------------------------"
  644.   PRINT AT(20,24);name$;
  645.   PRINT AT(40,24);summe%;
  646.   '
  647.   REPEAT
  648.   UNTIL MOUSEK OR INKEY$>""
  649.   SPUT karte$
  650. RETURN
  651. '
  652. PROCEDURE schluss
  653.   ALERT 3,"Programmende?",2,"ja|nein",antw%
  654.   IF antw%=1
  655.     GOSUB rekord_einsortieren
  656.     '
  657.     EDIT
  658.   ENDIF
  659. RETURN
  660. '
  661. PROCEDURE rekord_einsortieren
  662.   LOCAL i%
  663.   summe%=0             ! erreichte Gesamtpunktzahl ermitteln
  664.   FOR i%=1 TO 8
  665.     summe%=summe%+stadtpunkte%(i%)+landpunkte%(i%)
  666.   NEXT i%
  667.   '
  668.   IF summe%>rekord%(10)
  669.     al$="Du gehörst mit "+STR$(summe%)+" Punkten|zu den zehn Besten!| |"
  670.     al$=al$+"Punktestand speichern?"
  671.     ALERT 2,al$,1,"ja|nein",antw%
  672.     IF antw%=1
  673.       rekord%(10)=summe%
  674.       name$(10)=name$
  675.       FOR i%=10 DOWNTO 2
  676.         IF rekord%(i%)>rekord%(i%-1)
  677.           SWAP rekord%(i%),rekord%(i%-1)
  678.           SWAP name$(i%),name$(i%-1)
  679.         ENDIF
  680.       NEXT i%
  681.       GOSUB rekorde_auf_disk
  682.     ENDIF
  683.   ENDIF
  684. RETURN
  685. '
  686. PROCEDURE rekorde_auf_disk
  687.   LOCAL i%
  688.   OPEN "O",#1,pfad$+"welt.rek"
  689.   FOR i%=1 TO 10
  690.     PRINT #1,name$(i%)
  691.     PRINT #1,(rekord%(i%))
  692.   NEXT i%
  693.   PRINT #1,"ENDE"+CHR$(7)   ! CHR$(7), damit Ändern mit WORDPLUS unmöglich ist
  694.   CLOSE #1
  695. RETURN
  696. '
  697. PROCEDURE rekorde_von_disk
  698.   LOCAL i%
  699.   IF EXIST(pfad$+"welt.rek")
  700.     OPEN "I",#1,pfad$+"welt.rek"         ! Datei mit den zehn Besten
  701.     FOR i%=1 TO 10
  702.       INPUT #1,name$(i%)
  703.       INPUT #1,rekord%(i%)
  704.     NEXT i%
  705.     INPUT #1,dummy$
  706.     CLOSE #1
  707.   ELSE
  708.     FOR i%=1 TO 10
  709.       name$(i%)="Dummy "+STR$(i%)     ! wenn Rekorddatei gelöscht wurde,
  710.       rekord%(i%)=55-5*i%             ! werden Phantasierekorde gesetzt
  711.     NEXT i%
  712.   ENDIF
  713.   '
  714.   GOSUB name_rein
  715.   '
  716. RETURN
  717. '
  718. PROCEDURE name_rein
  719.   DEFFILL 0,2,8           ! weiße Füllfarbe
  720.   PBOX 140,50,500,150
  721.   BOX 140,50,500,150
  722.   BOX 141,51,499,149
  723.   BOX 143,53,497,147
  724.   PRINT AT(23,6);"Gib bitte Deinen Namen ein!"
  725.   PRINT AT(23,8);
  726.   FORM INPUT 18,name$
  727.   IF name$=""
  728.     name$="Anonymus"
  729.     PRINT AT(23,8);name$
  730.     PAUSE 50
  731.   ENDIF
  732.   SPUT karte$
  733.   DEFFILL 1,2,8   ! Füllfarbe schwarz
  734. RETURN
  735. '
  736. PROCEDURE spieler_aendern
  737.   GOSUB rekord_einsortieren
  738.   ARRAYFILL landpunkte%(),0
  739.   ARRAYFILL stadtpunkte%(),0
  740.   GOSUB name_rein
  741. RETURN
  742. '
  743. kartenpositionen:
  744. DATA 120,70
  745. DATA 130,0
  746. DATA 137,13
  747. DATA 97,38
  748. DATA 197,18
  749. DATA 27,8
  750. DATA 127, 28
  751. DATA 27,48
  752. DATA 22,13
  753. '
  754. positionsdaten:
  755. '
  756. ' Hauptstadt, Land, Kartennummer, x-Position, y-Position
  757. '
  758. ' Beim Einfügen neuer Daten kann man sich während der "Zeigen lassen"-Funktion
  759. ' mit Shift+Control die x- und y-Position neuer Städte zeigen lassen
  760. '
  761. DATA Baden-Württemberg,Stuttgart,1,237,325
  762. DATA Bayern,München,1,326,356
  763. DATA Bremen,Bremen,1,231,94
  764. DATA Hamburg,Hamburg,1,267,71
  765. DATA Hessen,Wiesbaden,1,208,251
  766. DATA Niedersachsen,Hannover,1,253,131
  767. DATA Nordrhein-Westfalen,Düsseldorf,1,158,190
  768. DATA Rheinland-Pfalz,Mainz,1,209,260
  769. DATA Saarland,Saarbrücken,1,160,293
  770. DATA Schleswig-Holstein,Kiel,1,267,29
  771. DATA Berlin,Berlin,1,384,121
  772. DATA Mecklenburg-Vorpommern,Schwerin,1,312,63
  773. DATA Brandenburg,Potsdam,1,367,127
  774. DATA Sachsen-Anhalt,Magdeburg,1,321,145
  775. DATA Thüringen,Erfurt,1,303,208
  776. DATA Sachsen,Dresden,1,401,201
  777. DATA Albanien,Tirana,2,354,308
  778. DATA Andorra,Andorra la Vella,2,227,280
  779. DATA Belgien,Brüssel,2,253,213
  780. DATA Bulgarien,Sofia,2,377,286
  781. DATA Dänemark,Kopenhagen,2,296,165
  782. DATA Bundesrepublik Deutschland,Berlin,2,303,203
  783. DATA Finnland,Helsinki,2,354,115
  784. DATA Frankreich,Paris,2,236,236
  785. DATA Griechenland,Athen,2,391,332
  786. DATA Großbritannien,London,2,225,196
  787. DATA Isle of Man,Douglas,2,210,169
  788. DATA Irland,Dublin,2,193,176
  789. DATA Island,Reykjavik,2,176,58
  790. DATA Italien,Rom,2,306,300
  791. DATA Jugoslawien,Belgrad,2,348,273
  792. DATA Liechtenstein,Vaduz,2,286,244
  793. DATA Luxemburg,Luxemburg,2,258,227
  794. DATA Malta,Valletta,2,309,366
  795. DATA Monaco,Monaco,2,267,286
  796. DATA Niederlande,Amsterdam,2,261,200
  797. DATA Norwegen,Oslo,2,285,129
  798. DATA Österreich,Wien,2,319,241
  799. DATA Polen,Warschau,2,343,198
  800. DATA Portugal,Lissabon,2,151,306
  801. DATA Rumänien,Bukarest,2,386,265
  802. DATA Schweden,Stockholm,2,321,134
  803. DATA Schweiz,Bern,2,273,250
  804. DATA Spanien,Madrid,2,189,301
  805. DATA Tschechoslowakei,Prag,2,317,225
  806. DATA Ungarn,Budapest,2,345,248
  807. DATA UDSSR,Moskau,2,429,145
  808. DATA Türkei,Ankara,2,437,303
  809. DATA Zypern,Nikosia,2,462,344
  810. DATA Alabama,Montgomery,3,399,225
  811. DATA Arizona,Phoenix,3,188,215
  812. DATA Arkansas,Little Rock,3,351,212
  813. DATA California,Sacramento,3,129,183
  814. DATA Colorado,Denver,3,240,169
  815. DATA Connecticut,Fartford,3,484,110
  816. DATA Delaware,Dover,3,482,148
  817. DATA Florida,Tallahassee,3,450,267
  818. DATA Georgia,Atlanta,3,428,228
  819. DATA Idaho,Boise,3,182,115
  820. DATA Illinois,Springfield,3,369,157
  821. DATA Indiana,Indianapolis,3,392,152
  822. DATA Iowa,Des Moines,3,336,140
  823. DATA Kansas,Topeka,3,300,176
  824. DATA Kentucky,Frankfort,3,404,173
  825. DATA Louisiana,Baton Rouge,3,356,250
  826. DATA Maine,Augusta,3,500,66
  827. DATA Maryland,Annapolis,3,484,158
  828. DATA Massachusetts,Boston,3,497,103
  829. DATA Michigan,Lansing,3,397,114
  830. DATA Minnesota,Saint Paul,3,330,97
  831. DATA Mississippi,Jackson,3,378,236
  832. DATA Missouri,Jefferson City,3,346,179
  833. DATA Montana,Helena,3,217,83
  834. DATA Nebraska,Lincoln,3,288,146
  835. DATA Nevada,Carson City,3,156,160
  836. DATA New Hampshire,Concord,3,493,88
  837. DATA New Jersey,Trenton,3,480,137
  838. DATA New Mexico,Santa Fe,3,238,224
  839. DATA New York,Albany,3,462,101
  840. DATA North Carolina,Raleigh,3,462,188
  841. DATA North Dakota,Bismarck,3,283,83
  842. DATA Ohio,Columbus,3,418,146
  843. DATA Oklahoma,Oklahoma City,3,307,207
  844. DATA Oregon,Salem,3,137,105
  845. DATA Pennsylvania,Harrisburg,3,450,131
  846. DATA Rhode Island,Providence,3,497,115
  847. DATA South Carolina,Columbia,3,448,205
  848. DATA South Dakota,Pierre,3,283,118
  849. DATA Tennessee,Nashville,3,402,196
  850. DATA Texas,Austin,3,302,254
  851. DATA Utah,Salt Lake City,3,195,165
  852. DATA Vermont,Montpelier,3,482,92
  853. DATA Virginia,Richmond,3,460,165
  854. DATA Washington,Olympia,3,152,71
  855. DATA West Virginia,Charleston,3,439,157
  856. DATA Wisconsin,Madison,3,362,110
  857. DATA Wyoming,Cheyenne,3,226,129
  858. DATA District of Columbia,Washington D.C.,3,464,151
  859. DATA Argentinien,Buenos Aires,4,328,261
  860. DATA Brasilien,Brasilia,4,356,178
  861. DATA Bolivien,La Paz,4,277,169
  862. DATA Chile,Santiago,4,276,242
  863. DATA Ecuador,Quito,4,223,96
  864. DATA Falkland-Inseln,Post Stanley,4,357,325
  865. DATA Frz. Guayana,Cayenne,4,329,70
  866. DATA Guayana,Georgetown,4,305,53
  867. DATA Kolumbien,Bogota,4,240,66
  868. DATA Paraguay,Ascunion,4,326,212
  869. DATA Peru,Lima,4,240,145
  870. DATA Surinam,Paramaribo,4,315,65
  871. DATA Uruguay,Montevideo,4,338,252
  872. DATA Venezuela,Caracas,4,273,41
  873. DATA Afghanistan,Kabul,5,218,148
  874. DATA Union von Myanmar (Birma),Yangon (Rangun),5,377,269
  875. DATA Bhutan,Thimpu,5,348,206
  876. DATA Bangla Desch,Dhaka,5,342,237
  877. DATA Bahrein,Manana,5,114,156
  878. DATA China,Peking,5,474,109
  879. DATA Hong Kong,Victoria,5,499,227
  880. DATA Israel,Jerusalem,5,43,85
  881. DATA Irak,Bagdad,5,99,101
  882. DATA Iran,Teheran,5,141,107
  883. DATA Indien,Neu Delhi,5,260,200
  884. DATA Jemen,Sana,5,51,225
  885. DATA Jordanien,Amman,5,53,96
  886. DATA Japan,Tokio,5,591,79
  887. DATA Katar,Doha,5,120,174
  888. DATA Kuwait,Kuwait City,5,111,141
  889. DATA Kambodscha,Pnomh Penh,5,444,318
  890. DATA Libanon,Beirut,5,51,70
  891. DATA Laos,Vientiane,5,418,266
  892. DATA Mongolei,Ulan Bator,5,408,67
  893. DATA Malaysia,Kuala Lumpur,5,427,373
  894. DATA Malediven,Male,5,218,358
  895. DATA Maskat und Oman,Maskat,5,145,212
  896. DATA Nordkorea,Pjöngjong,5,524,98
  897. DATA Nordvietnam,Hanoi,5,438,245
  898. DATA Nepal,Katmandu,5,315,210
  899. DATA Philippinen,Manila,5,546,266
  900. DATA Pakistan,Islamabad,5,242,164
  901. DATA Saudi Arabien,Er-Riad,5,77,164
  902. DATA Südjemen,Aden,5,60,240
  903. DATA Singapur,Singapur,5,431,384
  904. DATA Syrien,Damaskus,5,75,71
  905. DATA Südkorea,Seoul,5,537,110
  906. DATA Südvietnam,Saigon,5,464,322
  907. DATA Sri Lanka (Ceylon),Colombo,5,277,348
  908. DATA Taiwan,Taipeh,5,534,204
  909. DATA Thailand,Bangkog,5,416,301
  910. DATA Vereinigte Arabische Emirate,Abu Dhabi,5,130,185
  911. DATA Äthiopien,Addis Abeba,6,408,162
  912. DATA Algerien,Algier,6,283,44
  913. DATA Ägypten (Vereinigte Arabische Republik),Kairo,6,376,69
  914. DATA Angola,Luanda,6,310,245
  915. DATA Äquatorialguinea,Malabo,6,283,191
  916. DATA Botswana,Gaborone,6,346,309
  917. DATA Burkina Faso,Ouagadougou,6,240,145
  918. DATA Burundi,Bujumbura,6,387,225
  919. DATA Benin,Cotonou,6,262,167
  920. DATA Elfenbeinküste,Yamoussoukro,6,229,175
  921. DATA Afar und Issa,Djibuti,6,437,142
  922. DATA Gabun,Libreville,6,293,204
  923. DATA Guinea,Conakry,6,186,165
  924. DATA Gambia,Banjul,6,174,143
  925. DATA Ghana,Accra,6,246,173
  926. DATA Kamerun,Jaunde,6,297,178
  927. DATA Kenia,Nairobi,6,410,200
  928. DATA Kongo,Brazzaville,6,304,218
  929. DATA Kapverdische Inseln,Praia,6,151,131
  930. DATA Komoren,Moroni,6,439,268
  931. DATA Liberia,Monrovia,6,212,175
  932. DATA Libyen,Tripolis,6,318,64
  933. DATA Lesotho,Maseru,6,358,339
  934. DATA Madagaskar,Tananarive,6,447,310
  935. DATA Mosambik,Maputo,6,384,299
  936. DATA Mauretanien,Nuakschott,6,196,120
  937. DATA Mali,Bamako,6,225,139
  938. DATA Marokko,Rabat,6,245,54
  939. DATA Malawi,Lilongwe,6,393,264
  940. DATA Mauritius,Port Louis,6,493,309
  941. DATA Nigeria,Lagos,6,275,171
  942. DATA Niger,Niamey,6,280,133
  943. DATA Namibia (Südwest-Afrika),Windhuk,6,322,297
  944. DATA Guinea-Bissau,Bissau,6,178,157
  945. DATA Ruanda,Kigali,6,389,211
  946. DATA Réunion,Saint Denis,6,473,330
  947. DATA Republik Sahara,El Alajun,6,202,97
  948. DATA Sudan,Khartum,6,384,135
  949. DATA Somalia,Mogadischu,6,442,185
  950. DATA Sambia,Lusaka,6,362,260
  951. DATA Swasiland,Mbabane,6,381,324
  952. DATA Südafrika,Pretoria,6,366,313
  953. DATA Sierra Leone,Freetown,6,193,174
  954. DATA Senegal,Dakar,6,187,133
  955. DATA Sankt Helena,Jamestown,6,226,299
  956. DATA São Tomé e Principe,São Tomé,6,266,209
  957. DATA Seychellen,Victoria,6,499,223
  958. DATA Simbabwe,Harare,6,369,284
  959. DATA Togo,Lome,6,257,181
  960. DATA Tunesien,Tunis,6,304,42
  961. DATA Tschad,N'djamena (Fort Lamy),6,320,145
  962. DATA Tansania,Dodoma,6,408,233
  963. DATA Uganda,Kampala,6,386,195
  964. DATA Zentralafrikanische Republik,Bangui,6,321,173
  965. DATA Zaire,Kinshasa,6,326,222
  966. DATA Amerikanische Jungferninseln,Charlotte Amalie,7,528,154
  967. DATA Bahamas,Nassau,7,364,80
  968. DATA Barbados,Bridgetown,7,595,251
  969. DATA British Honduras,Belize,7,208,177
  970. DATA Caymaninseln,Georgetown,7,297,163
  971. DATA Costa Rica,San José,7,269,287
  972. DATA Dominikanische Republik,Santo Domingo,7,459,174
  973. DATA El Salvador,San Salvador,7,206,227
  974. DATA Guadaloupe,Basse-Terre,7,572,208
  975. DATA Guatemala,Guatemala,7,183,211
  976. DATA Haiti,Port-au-Prince,7,419,169
  977. DATA Honduras,Tegucigalpa,7,224,216
  978. DATA Jamaika,Kingston,7,360,181
  979. DATA Kuba,Havanna,7,294,101
  980. DATA Martinique,Forte-de-France,7,578,218
  981. DATA Mexiko,Mexiko,7,99,153
  982. DATA Nicaragua,Managua,7,240,253
  983. DATA Niederländische Antillen,Willemstad,7,472,252
  984. DATA Panama,Panama,7,324,307
  985. DATA Panamakanalzone,Balboa,7,315,312
  986. DATA Puerto Rico,San Juan,7,502,167
  987. DATA Trinidad und Tobago,Port of Spain,7,571,274
  988. DATA Amerikanisch Samoa,Pago Pago,8,470,191
  989. DATA Australien,Canberra,8,288,300
  990. DATA Britische Salomoninseln,Honiara,8,337,161
  991. DATA Brunei,Bandar Seri Begawan,8,115,115
  992. DATA Christmas-Inseln (Weihnachtsinseln),Christmas-Insel,8,527,131
  993. DATA Cookinseln,Avarna,8,500,242
  994. DATA Fidschiinseln,Suva,8,416,218
  995. DATA Gilbert und Ellise Inseln,Tarawa,8,401,140
  996. DATA Guam,Agana,8,243,68
  997. DATA Hawaii,Honolulu,8,519,21
  998. DATA Indonesien,Djakarta,8,93,178
  999. DATA Neuseeland,Wellington,8,392,331
  1000. DATA Neue Hebriden,Vila,8,362,199
  1001. DATA Neukaledonien,Noumea,8,358,233
  1002. DATA Niue,Alofi,8,463,231
  1003. DATA Norfolk Island,Kingston,8,365,261
  1004. DATA Papua-Neuguinea,Port Moresby,8,272,168
  1005. DATA Tahiti,Papeete,8,545,240
  1006. DATA Tokelau-Inseln,Tokelau-Inseln,8,478,161
  1007. DATA Tonga,Nukualofa,8,438,259
  1008. DATA Portugisisch Timor,Dili,8,182,180
  1009. DATA Tasmanien,Hobart,8,294,337
  1010. DATA Westsamoa,Apia,8,448,189
  1011. DATA ENDE,ende,9,0,0
  1012. '
  1013. ' hier enden die vernünftigen Daten
  1014. '
  1015. DATA Gemeinde Edewecht,Edewecht,1,195,86
  1016. DATA -,Friedrichsfehn,1,198,86
  1017. DATA -,Leer,1,188,86
  1018. DATA Ostfriesland, Aurich,1,194,76
  1019. DATA Land Oldenburg,Oldenburg,1,202,87
  1020. DATA Westeuropa,Jeddeloh,0,306,132
  1021. DATA Mitteleuropa,Westerscheps,0,306,132
  1022. DATA Volkswagen,Wolfsburg,1,299,126
  1023. DATA -,Braunschweig,1,286,135
  1024. DATA -,Münster,1,187,157
  1025. DATA -,Bremerhaven,1,224,70
  1026. DATA -,Flensburg,1,248,8
  1027. DATA -,Rostock,1,337,39
  1028. DATA -,Neubrandenburg,1,375,63
  1029. DATA -,Frankfurt an der Oder,1,420,129
  1030. DATA -,Frankfurt am Main,1,222,253
  1031. DATA -,Kassel,1,248,187
  1032. DATA -,Suhl,1,293,229
  1033. DATA -,Gera,1,340,213
  1034. DATA -,Halle,1,337,181
  1035. DATA -,Leipzig,1,351,187
  1036. DATA -,Chemnitz,1,371,213
  1037. DATA -,Köln,1,166,212
  1038. DATA -,Bonn,1,167,218
  1039. DATA -,Trier,1,154,270
  1040. DATA -,Karlsruhe,1,214,311
  1041. DATA -,Freiburg,1,191,366
  1042. DATA -,Würzburg,1,268,275
  1043. DATA -,Bayreuth,1,323,263
  1044. DATA -,Nürnberg,1,312,282
  1045. DATA -,Regensburg,1,347,312
  1046. DATA -,Passau,1,393,329
  1047. DATA SCHLUSS,,1,0,0
  1048.